#pragma once 


// base game state.. make dirivative for menu and play etc

class GameStateBase : public GameInputHandlersBase
{
public:
	//=== vars ===//
	VxIrrBase *							m_poIrrBase;
	// for convenience keep pointers to most commonly used irrlicht objects 
	irr::video::IVideoDriver*			m_poDriver;			// irrlicht video driver
	irr::scene::ISceneManager*			m_poSceneMgr;		// irrlicht scene manager
	irr::gui::IGUIEnvironment*			m_poGui;			// irrlicht gui driver
	irr::scene::ISceneCollisionManager* m_poCollideMgr;

	//=== constructor ===//
	GameStateBase();
	//=== destructor ===//
	~GameStateBase();

	//! startup
	virtual RCODE	GameStateStartup( VxIrrBase * poIrrBase );
	//! shutdown
	virtual void	GameStateShutdown( void ){};
	//! update current game state.. time is millisec since app started
	virtual RCODE	GameStateUpdate( U32 u32AppTimeMs ){return 0;};
	//! called when application is about to sleep
	virtual RCODE	GameStateAppSleep( void ){return 0;};
	//! called when application is resuming from sleep.. app must reload textures etc
	virtual RCODE	GameStateAppResume( U32 u32FrameTimeMs ){return 0;};
	//! interpolate before draw
	virtual void	InterpolatePositions( F32 f32TimeMs ){};
	//! draw scene
	virtual void	Draw( void ){};

	//=== properties ===//

	//=== methods ===//

};


